/*
 * StructXml.h
 *
 *  Created on: 2015年7月11日
 *      Author: chuanjiang.zh@qq.com
 */

#ifndef VGS_STRUCTXML_H_
#define VGS_STRUCTXML_H_

#include "MANSCDP.h"
#include "tinyxml.h"


namespace xml
{
    class Node;
}

/**
 * POD数据与XML直接的转换函数
 *
 */

namespace gb
{

/**
 * 从XML提取基本属性
 * @param xml
 * @param cmd
 * @return
 */
bool parse(const std::string& xml, Command& cmd);

void cmdToXml(Command& cmd, xml::Node& node);
void toXml(Request& request, xml::Node& node);
void toXml(Response& response, xml::Node& node);
void toXml(Notify& notify, xml::Node& node);
void toXml(Query& query, xml::Node& node);


bool fromXml(TiXmlDocument& doc, Command& cmd);

bool fromXml(TiXmlDocument& doc, Response& resp);

std::string toXml(Query& query);
std::string toXml(Request& request);


bool fromXml(TiXmlDocument& doc, CatalogResponse& resp);


std::string toXml(PtzRequest& request);

std::string toXml(AlarmNotify& obj);
bool fromXml(TiXmlDocument& doc, AlarmNotify& obj);

bool fromXml(TiXmlDocument& doc, DeviceInfoResponse& obj);

bool fromXml(TiXmlDocument& doc, DeviceStatusResponse& obj);

std::string toXml(CatalogQuery& obj);

std::string toXml(BroadcastNotify& obj);



} /* namespace gb */

#endif /* VGS_STRUCTXML_H_ */
